#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
// 子模块头文件（需与实际代码匹配）
#include "client_init.h"   // 包含 Init_client() 等初始化逻辑
#include "login_menu.h"    // 包含 login_menu() 登录流程
#include "dialogue_menu.h" // 包含 dialogue_menu() 交互逻辑
#include "client_destroy.h"// 包含 destroy() 资源销毁

Client* Init_client();
int login_menu(Client* client);
void destroy(Client* client);

int main(int argc, char* argv[]) {
    // 1. 初始化客户端（创建连接、准备资源）
    Client* client = client_init("127.0.0.1", 8080);
    if (client == NULL) {
        fprintf(stderr, "客户端初始化失败！程序退出\n");
        return -1;
    }
    printf("✅ 客户端初始化完成（socket FD：%d）\n", client->socket_fd);

    // 2. 登录流程（包含 send_message()/recv_message()/login_verify()）
    int login_result = login_menu(client);
    if (login_result != 0) {
        fprintf(stderr, "❌ 登录失败（错误码：%d），程序退出\n", login_result);
        destroy(client);
        return -1;
    }
    printf("✅ 登录成功！进入交互菜单...\n");

    // 3. 交互对话（包含 send_message()/recv_message()/save_data() 等）
    dialogue_menu(client);

    // 4. 销毁客户端资源（close() 关闭连接、释放内存等）
    printf("🔚 开始销毁客户端资源...\n");
    destroy(client);
    printf("✅ 客户端资源已释放，程序退出\n");

    return 0;
}
